Multicore processing devices are well established on the market and tend to become ever more common with the ongoing advances in semiconductor device fabrication. A multicore processing apparatus is a device which comprises two or more independent processors, referred to as cores or processing cores. A processor is a unit which reads and executes program instructions. Each core of a multicore apparatus may execute a program independently from the other cores of the multicore apparatus. Multicore devices may thus be used to perform more than one task at the same time.
For instance, a dual core processing device may execute two programs simultaneously, thus achieving a higher speed as compared to a single core running the two programs in a sequential manner. Such operating mode is also referred to as a decoupled parallel mode (DPM).
Alternatively, the two cores may be operated in a redundant manner, i.e., the same input data and program instructions are fed to both cores to generate redundant results. Such operating mode may be referred to as a redundant mode. Any deviation between the output of the first core and the output of the second core may point to a processing fault. An appropriate action may be triggered in response to any disagreement between the output from the first core and the output from the second core. For instance, such results may be discarded or the relevant computation may be repeated. Data processing can thus be made more reliable. It is also known to use an odd number of cores, e.g. three cores, and to accept an output value as valid if the value has been obtained by a majority of the cores.
Thus, a decoupled parallel mode (DPM) is an operating mode in which two or more cores independently execute different tasks. A redundant mode is an operating mode in which two or more cores execute the same task in a redundant manner. In many existing systems, switching between these two modes is possible by restarting (resetting) the system.
These concepts are not restricted to processing cores, but may be generalized to any kind of processing unit. A processing unit is a device for performing logical operations. A processing core is an example of a processing unit. An arithmetic logic unit is another example of a processing unit. A storage unit (memory) as such is not a processing unit. However, a processing unit may comprise one or more memories, in addition to logical components. A processing apparatus may comprise two or more processing units which may be operated independently from each other. For example, the processing units may be operated in a decoupled parallel mode or in a redundant mode.
International publication WO2009/138819 A1 (Bogenberger et al.) describes a processing resource apparatus that comprises a reference processing module and a target processing module. States from the reference processing module are copied to the target processing module using a scan chain. The two modules can thus be synchronized.